"xen_major", xen_version >> 16,
"xen_minor", (xen_version & 0xffff),
"xen_extra", xen_extra,
- "xen_caps", xen_caps.caps,
+ "xen_caps", xen_caps,
"xen_params", str,
"xen_changeset", xen_chgset,
"cc_compiler", xen_cc.compiler,
static void write_msr_for(void *unused)
{
- if (((1 << current->processor) & msr_cpu_mask))
+ if ( ((1 << current->processor) & msr_cpu_mask) )
(void)wrmsr_user(msr_addr, msr_lo, msr_hi);
}
static void read_msr_for(void *unused)
{
- if (((1 << current->processor) & msr_cpu_mask))
+ if ( ((1 << current->processor) & msr_cpu_mask) )
(void)rdmsr_user(msr_addr, msr_lo, msr_hi);
}
pi->total_pages = max_page;
pi->free_pages = avail_domheap_pages();
pi->cpu_khz = cpu_khz;
- memset( pi->hw_cap, 0, sizeof(pi->hw_cap) );
- memcpy( pi->hw_cap, boot_cpu_data.x86_capability, NCAPINTS*4 );
+ memset(pi->hw_cap, 0, sizeof(pi->hw_cap));
+ memcpy(pi->hw_cap, boot_cpu_data.x86_capability, NCAPINTS*4);
ret = 0;
- if( copy_to_user(u_dom0_op, op, sizeof(*op)) )
- ret = -EINVAL;
+ if ( copy_to_user(u_dom0_op, op, sizeof(*op)) )
+ ret = -EFAULT;
}
break;
#endif
EXPORT_SYMBOL(mmu_cr4_features);
-int hvm_enabled = 0; /* can we run unmodified guests */
-
struct vcpu *idle_task[NR_CPUS] = { &idle0_vcpu };
int acpi_disabled;
startup_cpu_idle_loop();
}
-void arch_get_xen_caps(xen_capabilities_info_t *info)
+void arch_get_xen_caps(xen_capabilities_info_t info)
{
- char *p=info->caps;
+ char *p = info;
- *p=0;
+#if defined(CONFIG_X86_32) && !defined(CONFIG_X86_PAE)
-#ifdef CONFIG_X86_32
+ p += sprintf(p, "xen_%d.%d_x86_32 ", XEN_VERSION, XEN_SUBVERSION);
+ if ( hvm_enabled )
+ p += sprintf(p, "hvm_%d.%d_x86_32 ", XEN_VERSION, XEN_SUBVERSION);
-#ifndef CONFIG_X86_PAE
- p+=sprintf(p,"xen_%d.%d_x86_32 ",XEN_VERSION,XEN_SUBVERSION);
- if(hvm_enabled)
- {
- p+=sprintf(p,"hvm_%d.%d_x86_32 ",XEN_VERSION,XEN_SUBVERSION);
- }
-#else
- p+=sprintf(p,"xen_%d.%d_x86_32p ",XEN_VERSION,XEN_SUBVERSION);
- if(hvm_enabled)
+#elif defined(CONFIG_X86_32) && defined(CONFIG_X86_PAE)
+
+ p += sprintf(p, "xen_%d.%d_x86_32p ", XEN_VERSION, XEN_SUBVERSION);
+ if ( hvm_enabled )
{
- //p+=sprintf(p,"hvm_%d.%d_x86_32 ",XEN_VERSION,XEN_SUBVERSION);
- //p+=sprintf(p,"hvm_%d.%d_x86_32p ",XEN_VERSION,XEN_SUBVERSION);
+ //p += sprintf(p, "hvm_%d.%d_x86_32 ", XEN_VERSION, XEN_SUBVERSION);
+ //p += sprintf(p, "hvm_%d.%d_x86_32p ", XEN_VERSION, XEN_SUBVERSION);
}
-#endif
+#elif defined(CONFIG_X86_64)
-#else /* !CONFIG_X86_32 */
- p+=sprintf(p,"xen_%d.%d_x86_64 ",XEN_VERSION,XEN_SUBVERSION);
- if(hvm_enabled)
+ p += sprintf(p, "xen_%d.%d_x86_64 ", XEN_VERSION, XEN_SUBVERSION);
+ if ( hvm_enabled )
{
- //p+=sprintf(p,"hvm_%d.%d_x86_32 ",XEN_VERSION,XEN_SUBVERSION);
- //p+=sprintf(p,"hvm_%d.%d_x86_32p ",XEN_VERSION,XEN_SUBVERSION);
- p+=sprintf(p,"hvm_%d.%d_x86_64 ",XEN_VERSION,XEN_SUBVERSION);
+ //p += sprintf(p, "hvm_%d.%d_x86_32 ", XEN_VERSION, XEN_SUBVERSION);
+ //p += sprintf(p, "hvm_%d.%d_x86_32p ", XEN_VERSION, XEN_SUBVERSION);
+ p += sprintf(p, "hvm_%d.%d_x86_64 ", XEN_VERSION, XEN_SUBVERSION);
}
+
+#else
+
+ p++;
+
#endif
- BUG_ON((p-info->caps)>sizeof(*info));
+ *(p-1) = 0;
- if(p>info->caps) *(p-1) = 0;
+ BUG_ON((p - info) > sizeof(info));
}
/*
#include <public/io/ioreq.h>
+int hvm_enabled;
+
#ifdef CONFIG_VMX
int vmcs_size;
unsigned int opt_vmx_debug_level = 0;
integer_param("vmx_debug", opt_vmx_debug_level);
-extern int hvm_enabled;
-
#ifdef TRACE_BUFFER
static unsigned long trace_values[NR_CPUS][4];
#define TRACE_VMEXIT(index,value) trace_values[current->processor][index]=value
case XENVER_capabilities:
{
xen_capabilities_info_t info;
- extern void arch_get_xen_caps(xen_capabilities_info_t * info);
-
- memset(&info, 0, sizeof(info));
- arch_get_xen_caps(&info);
+ extern void arch_get_xen_caps(xen_capabilities_info_t info);
- if ( copy_to_user(arg, &info, sizeof(info)) )
+ memset(info, 0, sizeof(info));
+ arch_get_xen_caps(info);
+
+ if ( copy_to_user(arg, info, sizeof(info)) )
return -EFAULT;
return 0;
}
case XENVER_parameters:
{
xen_parameters_info_t info = { .virt_start = HYPERVISOR_VIRT_START };
-
if ( copy_to_user(arg, &info, sizeof(info)) )
return -EFAULT;
return 0;
#include <public/io/ioreq.h>
+extern int hvm_enabled;
+
extern void vmx_asm_vmexit_handler(struct cpu_user_regs);
extern void vmx_asm_do_resume(void);
extern void vmx_asm_do_launch(void);
} xen_compile_info_t;
#define XENVER_capabilities 3
-typedef struct xen_capabilities_info {
- char caps[1024];
-} xen_capabilities_info_t;
+typedef char xen_capabilities_info_t[1024];
#define XENVER_changeset 4
typedef char xen_changeset_info_t[64];
#define XENVER_parameters 5
-typedef struct xen_paramaters_info {
-unsigned long virt_start;
+typedef struct xen_parameters_info {
+ unsigned long virt_start;
} xen_parameters_info_t;
#endif /* __XEN_PUBLIC_VERSION_H__ */